package com.msy.filter;

import io.reactivex.disposables.Disposable;
import org.reactivestreams.Subscription;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterNumber;
import org.web3j.protocol.http.HttpService;

/**
 * @ClassName MyBlockFilter
 * @Description 块过滤器
 * @Author 13683
 * @Date 2019/8/14 16:36
 * @Version 1.0
 **/
public class MyBlockFilter {


    private static final String URL = "http://localhost:8545";

    public static void main(String[] args) {
        //1.新建web3j客户端
        Web3j web3j = Web3j.build(new HttpService(URL));
        // Block过滤器，当有新块加入到链时触发
        web3j.blockFlowable(false)
                .subscribe(ethBlock -> {
                    String hash = ethBlock.getBlock().getHash();
                    System.out.println(hash);
                });
        /**
         * 重放来自区块链的一系列数据块
         * param1：起始块
         * param2: 结束块
         * param3: 如果为true，则提供嵌入块中的事务，否则为事务哈希
         */
        web3j.replayPastBlocksFlowable(new DefaultBlockParameterNumber(30),
                new DefaultBlockParameterNumber(31),true).subscribe(ethBlock -> {
            System.out.println(ethBlock.getBlock().getHash());
        });


    }
}
